NetBSD/pc98(based on NetBSD 1.3.1) カーネル再構築情報 最終更新 1998年 3月 19日 このドキュメントでは、カーネルの再構築方法について説明します。 1. カーネルの再構築手順 カーネルを再構築するときのおおまかな手順は、次の通りです。 (1) ソースを展開する NetBSD/pc98 では、NetBSD オリジナルのソースツリーと、PC98用に変更し た、通称src.skel と呼ばれる、2つのソースツリーがあります。NetBSD オリ ジナルのソースの入手方法およびPC98用のソースツリーやパッチの入手方法は 「readme.txt」に書いてありますので、そちらを参照してください。 次に、su コマンドを使用してrootになるか、root でログインして下さい。 カーネルを再構築する時は、root で行う必要があるからです。 続いて、オリジナルのソースツリーのあるディレクトリに移動し、ファイル を /usr に展開します。 /home/NetBSD-1.3.1/source/sets にあるとすれば、 # cd /home/NetBSD-1.3.1/source/sets # cat syssrc.* | (cd /; tar zxf -) として下さい。これにより、/usr/src/sys 以下にオリジナルのカーネルソース が展開されます。 続いて、NetBSD core teamからリリースされた公式パッチがあるならば、 そのパッチも当てて下さい。 PC98用のソースは、skel131.tgz という名前で配布されているので、 これを展開します。ソースが/home/NetBSD-pc98/1.3.1 ディレクトリに あるとすれば、 # cd /home/NetBSD-pc98/1.3.1 # cat skel131.tgz | (cd /; tar zxf -) として下さい。 NetBSD/pc98 core team からの公式パッチが出ている場合は、必ず それも適用して下さい。/home/NetBSD-1.3.1-pc98/patches ディレクトリにあ るとすれば、 # cd /home/NetBSD-1.3.1-pc98/patches # zcat patch-????.gz | (cd /usr; patch -p) としてください。ここで、???? はパッチ番号を表しています。 なお、開発中のソースを公開する場合、skel131.tgz という名前ではなく、 例えばsrc.skel-131R-????.tar.gz というように、patch-????.gz を当てた物と してリリースする事があります。このようなsrc.skelを使用する場合も、同 様な手順でできるでしょう。 (2) /usr/src.skel ディレクトリをunion mount する。 NetBSD/pc98 では、PC98用に変更した部分を/usr/src.skel ディレクトリ の下に置き、/usr/src ディレクトリは一切変更を加えないようにしています。 このため、カーネルやバイナリのリコンパイルをする時は、/usr/src ディ レクトリに/usr/src.skel ディレクトリを重ね合わせ(union mount)、その上 でコンパイルします。 具体的には、 # mount -t union /usr/src.skel /usr/src としてください。 (3) カーネルの設定内容を書いたファイルを準備する。 次に、/sys/arch/i386/conf ディレクトリにカーネルの設定内容を書い たファイルを準備します。何もないところから書くのは大変なので、GENERIC98 をコピーして書き換えた方が良いでしょう。とりあえず、ここではPC98と しておきます。 # cd /sys/arch/i386/conf # cp GENERIC98 PC98 具体的な記述内容については後述します。 (4) config コマンドを実行する。 次に、/usr/sbin/config コマンドを実行します。このコマンドを実行 する事により、/sys/arch/i386/compile/PC98(PC98は、指定したコンフィ グファイル名です)ディレクトリに必要なファイルがコピーされ、カーネ ルの再構築をする為のファイルが準備されます。 # /usr/sbin/config PC98 コンフィグファイルが正しければ「Don't foget to run "make depend"」 というメッセージが出ます。このメッセージが出れば5. へ進み、何かエ ラーが出るようならコンフィグファイルに記述間違いがないかを確認して下 さい。 (5) カーネルの再構築をする ここまでうまくいっていれば、カーネルをコンパイルしましょう。手順は 次の通りです。 # cd ../compile/PC98 # make depend # make なお、カーネルをコンパイルする時は、NetBSD 付属の UCB makeを使用して 下さい。GNU make ではコンパイルできないので、使用しないで下さい。 (6) カーネルのインストールをする コンパイルが正常に終了したら、最後にインストールをします。念のため、 古いカーネルも保存しておきましょう。 # mv /netbsd /netbsd.old # cp netbsd / インストールしたら、一旦リブートして、カーネルが正常に動作するかどう かを確認してみましょう。 # shutdown -r now もしくは、 # reboot です。もし、カーネルが正常に動作しない場合は、ブートプロンプトが出てい る時に、 netbsd.old と入力し、リターンキーを押すと、古いカーネルで立ち上がります。その後、 config ファイルの設定を確認しましょう。この時、rc.local等でlkm を ロードしている場合、絶対にマルチユーザーモードにしないでください。 2. デバイスナンバーの指定方法について NetBSD/i386では、isaバスにおいて、例えば aic* at isa? port 0x1840 irq 5 flags 0x10000 というような、アスタリスクを用いてデバイスナンバーを決定する方法を 許しておりません。そのため、NetBSD/i386においてこのような形式を用い て作成されたカーネルをブートさせると、panic: してしまいます。 そこでNetBSD/pc98では、isaバスにおいてもアスタリスク形式のデバイス ナンバーを使用可能にしました。例えば、neであると ne* at isa? port 0x00d0 iomem 0xc8000 irq 6 flags 0x400000 # LGY98 ne* at isa? port 0x00d8 iomem 0xc8000 irq 6 flags 0x200000 # SMARTCOM 98 ne* at isa? port 0x00d0 irq 6 iomem 0xc0000 flags 0x600000 # SIC-98 ne* at pisa? と指定する事により、attachされる順番でne0, ne1, ... が順次割り当てら れます。また、例えばSIC-98はne0に割り当てたいと言う場合は、 ne* at isa? port 0x00d0 iomem 0xc8000 irq 6 flags 0x400000 # LGY98 ne* at isa? port 0x00d8 iomem 0xc8000 irq 6 flags 0x200000 # SMARTCOM 98 ne0 at isa? port 0x00d0 irq 6 iomem 0xc0000 flags 0x600000 # SIC-98 ne* at pisa? と記述して下さい。その他 ne5 at isa? port 0x00d0 iomem 0xc8000 irq 6 flags 0x400000 # LGY98 ne3 at isa? port 0x00d8 iomem 0xc8000 irq 6 flags 0x200000 # SMARTCOM 98 ne0 at isa? port 0x00d0 irq 6 iomem 0xc0000 flags 0x600000 # SIC-98 ne* at pisa? というような記述も可能であり、このような場合pcmciaのカードは ne6, ne7, ... に割り当てられます。 3. INT <-> irq, DMA <-> drq の対応について 参考までに、PC98マシンで一般的に使用されているINT番号と、PCATマシン で使用されているirq番号の対応表を示しています。工場出荷時と違うINT番 号を使用したデバイスを接続している場合は、この対応表を見ながら、該当 するデバイスのirq の値を変更して下さい。また、DMA番号とdrq番号は同じ 値となっています。 INT0 : irq 3 INT1 : irq 5 INT2 : irq 6 INT3 : irq 9 INT41 : irq 10 INT42 : irq 11 INT5 : irq 12 INT6 : irq 13 4. config ファイルの記述方法 次に、コンフィグファイルの中身について解説します。このファイルは、 カーネルの動作を決める重要なファイルです。この中には、絶対に消して はいけないもの、自分の環境に応じて書き換えた方が良いものなど、いろ いろなものがあります。また、FreeBSD(98)やNetBSD/pc98(based on NetBSD 1.0)などに比べて非常に沢山のオプションがあります。注意深く書き換え ないと、そのマシンで動作しないカーネルをつくってしまう事があります ので、慣れないうちは少しづつconfig ファイルを書き換えた方が良いで しょう。 行の先頭に "#" マークをつけると、その行はコメントになりますので、 必要に応じて"#" マークをつけてコメントにしたり、"#" マークを消して 有効にしたりして下さい。また、ここでは解説していないオプションもあ ります。このようなオプションは変更しない方がよいでしょう。 machine i386 INTEL i386 アーキテクチャのカーネルを作成する事を指示します。 通常は/sys/arch/i386/conf/std.i386で定義されています。絶対に 書き換えないで下さい。 options SWAPPAGER options VNODEPAGER options DEVPAGER    メモリバッキングオブジェクトを指定します。通常全て有効にします。 SWAPPAGERは、実メモリーが不足の場合に用いられます。 VNODEPAGERはプログラムのロード時や共有ライブラリーに用いられます。 DEVICEPAGERはXなどのビデオメモリーのマッピングに用いられます。 通常は/sys/arch/i386/conf/std.i386で定義されています。 maxusers 32 # estimated number of users カーネル内のいくつかのテーブルの大きさを決定するために使用しま す。この値が小さいとファイルが作成できなくなったり、プロセスが起 動できなくなる可能性があります。 また、"最大ユーザ" とありますが、この値を越えるユーザーがログイ ンする事も出来ます。 options I386_CPU options I486_CPU options I586_CPU 使用するCPUの指定です。i386DX/SX等のプロセッサを指定する場合は options I386_CPU を、i486DX/SX等のプロセッサを指定する場合は、 options I486_CPU を、Pentium等のプロセッサを指定する場合は、 options I586_CPU を、Pentium Pro/Pentium II等のプロセッサを指定する場合は、 options I686_CPU を指定して下さい。複数指定する事も出来るので、このままにしておい た方が良いでしょう。 なお、Cyrixの486DLC/SLCや、5x86などのCPUに換装している場合、CPU を自動的に検出してキャッシュを有効にします。なお、Cyrix Cx486DX2 などは、Cx5x86 と誤判定される可能性があります。 options MATH_EMULATE 浮動小数点エミュレータを組み込む事を指示します。数値演算プロセッ サがない場合は必ず指定して下さい。 options VM86 仮想8086エミュレーション機能を有効にします。APMを使用する場合は 必ず指定して下さい。 options USER_LDT ユーザーレベルでLDTをサポートします。WINEを使用する時は指定し てください(ただし、NetBSD/pc98 で動作するかは未確認です)。 options DUMMY_NOPS    IOアクセスにウエイトを入れます。通常は指定しなくても良いでしょう。 options XSERVER options "COMCONSOLE=\"com\"" options FEXTMEM_SIZE=... 16MB 以下にある拡張メモリサイズが正しく認識されない場合、搭載メ モリサイズをを記述して下さい。単位はKBです。 options SEXTMEM_SIZE=16384 16MB以上メモリを増設できない機種に、メルコ社のover 16MB対応CPUボー ドを増設したりして、BIOSの認知しているメモリ量と実装メモリ量が違う 場合、SEXTMEM_SIZE に16MB 以上にある拡張メモリサイズを記述して下さ い。単位はKBです。 options UCONSOLE X Window Systemをサポートしたコンソールを作成します。X Windowを 使用する場合は指定して下さい。 options INSECURE カーネルのセキュリティレベルを落とし、/dev/mem を使う事を許可 します。X Window Systemを使用する場合は指定して下さい。なお、 options INSECUREをつけない場合、XFree86の配布物に含まれている aperture driverを使う事も出来ますが、NetBSD/pc98 core teamでは 推奨しません。 options RTC_OFFSET=-540 カーネルが時差の計算をする時に使用されます。日本でNetBSD/pc98 を使用する時はこのままで良いでしょう。 options NTP options KTRACE    システムコールなどのカーネル内での挙動をトレース出来るようにします。   ktrace コマンドを使う場合必ず指定します。 options SYSVMSG options SYSVSEM options SYSVSHM SYSV形式のプロセス間通信をサポートします。X Window を使う時は 必ず指定して下さい。 options SHMMAXPGS=1024    共有メモリ空間のページサイズです。通常は指定する必要ありません。 options LKM LKM(loadable kernel module)をサポートします。 options DIAGNOSTIC    カーネル動作の正当性を通常より厳しく調べます。動作が遅くなりますが、   カーネルのバグの発見には大切な役割を果たします。 options DEBUG options KMEMSTATUS options DDB カーネルデバッガを使用する時は指定して下さい。通常は、コメント にしても良いでしょう。 options KGDB options "KGDB_DEVNAME=\"com\"" makeoptions DEBUG="-g" カーネルをコンパイルする時にシンボルテーブルを作成する事を指示 します。通常は指定しなくても良いでしょう。 options COMPAT_NOMID options COMPAT_09 options COMPAT_10 options COMPAT_11 options COMPAT_12 旧バージョンのNetBSDをサポートします。指定しておく方が良いで しょう。 options COMPAT_43 4.3BSDのシステムコールをサポートします。必ず指定して下さい。 options COMPAT_SVR4 SVR4のエミュレーションをサポートします。 options COMPAT_IBCS2 SCOとISCのエミュレーションをサポートします。 options COMPAT_LINUX Linuxのエミュレーションをサポートします。 options COMPAT_FREEBSD FreeBSDのエミュレーションをサポートします。 options EXEC_ELF32 Linuxなどで使用されている、32bit ELF形式のプログラムの 実行を可能にします。 file-system FFS Fast File Systemをサポートします。必ず指定して下さい。 file-system EXT2FS Linuxのsecond extended file systemをサポートします。 file-system LFS Log Structured File Systemを使用する時は指定して下さい。 file-system MFS Memory File Systemを使用する時は指定して下さい。 file-system NFS Network File Systemを使用する時は指定して下さい。 file-system CD9660 ISO 9660形式のCD-ROM をサポートします。指定した方が良いでしょう。 file-system MSDOSFS MSDOSのファイルシステムをサポートします。指定した方が良いでしょう。 file-system FDESC    File descripter system (/dev/fd/???) を使用可能にします。    シェルなどで用いられますから、指定して下さい。 file-system KERNFS kernelファイルシステムをサポートします。 file-system NULLFS nullファイルシステムをサポートします。 file-system PORTAL portalファイルシステムをサポートします。 file-system PROCFS processファイルシステムをサポートします。 file-system UMAPFS umapファイルシステムをサポートします。 file-system UNION unionファイルシステムをサポートします。カーネルのコンパイルをする 時に使用するので、必ず指定して下さい。 options QUOTA quota を有効にしたい時は指定して下さい。 options NFSSERVER NFS サーバーになる時は指定して下さい。 options FIFO    名前付きパイプをサポートします。指定してください。 options EXT2FS_SYSTEM_FLAGS options GATEWAY ゲートウェイマシンとして使用する場合は指定して下さい。 options INET インターネットプロトコルをサポートします。必ず指定して下さい。 options MROUTING マルチキャストルーティングをサポートします。マルチキャスト通信を 行う時は指定して下さい。 options NS options NSIP options ISO,TPIP options EON options CCITT,LLC,HDLC その他の通信規格をサポートします。必要なければコメントにしても良い でしょう。 options NETATALK AppleTalkをサポートします。 options PPP_BSDCOMP options PPP_DEFLATE options PPP_FILTER options PFIL_HOOKS options TCP_COMPAT_42 4.2BSD形式のTCP/IP の実装もサポートします。使用している ネットワークに古いマシンがある場合は指定すると良いかも知れません。 options PCIVERBOSE PCI busのプローブの状態を表示します。 options SCSIVERBOSE SCSIのエラーメッセージを可読可能な形で表示します。 config netbsd root on ? type ? ルートパーティションとスワップパーティションの存在するディスクの 指定です。例えば、 config netbsd root on sd0a type ffs と指定すると、SCSIハードディスクのsd0a にルートパーティションが  ffs形式で存在することを表しています。通常はこのままで良いでしょう。 options CONFIG_DEVICES 起動時に各デバイスのIO port, irq, drqなどの選択を可能に します。 magic0 at isa? flags 4 'magic' デバイスは、コンフィギュレーションドライバです。これは、 起動時にprobeされるデバイスの、irq, drq, IO addressを変更するための 物です。 flags で指定した時間(sec)以内にリターンキーを押す事により、コン フィギュレーションモードに移行します。 options CLUSTERD_PAGEOUT options BLUELIGHTNING IBM 486SLC2/SX3 を使用する場合指定してください。キャッシュを有 効にするコードを組み込みます。現段階においては動作未確認です。 options CYRIX_5X86_PCR0=0x81 Cyrix 5x86 CPU 使用時に、PCR0 レジスタを使って指定できる、いくつかの 機能を指定します。 0x01 RSTK_EN: return stack enable 0x04 LOOP_EN: loop enable 0x80 LSSER: load store serialize enable (reorder disable) の組合わせで指定できます。 options MELCO_EUDF MELCO 製 EUD-F (PC-9801DA、RA21/51用CPUアクセラレータ)を使用する 場合指定してください。キャッシュを有効にするコードを組み込みます。 なお、後継製品の EUD-H、EUD-HP、EUD-Q シリーズを使用する場合には、 絶対にこのオプションを指定しないで下さい。このオプションは、CPU に intel DX4/100 を使用している EUD-F にのみ有効です。 mainbus0 at root systm0 at mainbus0 System デバイスの接続されるバスです。必ず記述してください。 isa0 at mainbus0 C bus を使用する事を宣言します。変更しないで下さい。 options AUTO_EOI_1 options AUTO_EOI_2 options REORDER_IRQ pci0 at mainbus0 bus ? ppb* at pci? dev ? function ? pci* at ppb? bus ? PCI busを使う事を宣言します。PCI busがある場合は変更しないで下さい。 options PCI_BUGGY_SUBCLASS=0xe1 一部のPCI-bus 所有NOTE機で、probe時に全てのdeviceの表示をして しまう場合があります。このような場合に指定して下さい。もし、この オプションを指定してもダメな時は、PCI busのプローブ時に表示される subclassの値を読み取って、0xe1の値を変更して下さい。 options PCI_IRQMASK=0x1028 PCCARDデバイスにおいて、利用するIRQを16進数で表現します。 bit3がIRQ3, bit5がIRQ5, bit6がIRQ6, bit10がIRQ10, bit12がIRQ12, bit13がIRQ13に相当します。例えば、0x1028と定義された場合、 IRQ3, IRQ5, IRQ10をPCCARDにおいて使用する事を意味します。 nepc0 at systm? pccs* at nepc0 NECオリジナルコントローラを持ったマシンにおいてPCCARDを 使用する時に指定して下さい。 gipc0 at systm? pccs* at gipc0 pccs* at gipc? Intel 82365互換のコントローラを持ったマシンにおいてPCCARDを 使用する時に指定して下さい。flagsは以下の意味を持ちます。 flags 0x0001 : PCCARDのためのIRQを使用しないモード (ポーリングモード)で動作します。IRQが 不足しているマシンで使用すると良いでしょう。 flags 0x0100 : コントローラを2つ持っているマシンにおいて、 2つめのコントローラを指定する時に用います。 tipc* at pci? dev ? function ? Texas Instruments社のコントローラを持ったマシンにおいてPCCARDを 使用する時に指定して下さい。 slot* at pccs? pisa* at slot? PCCARDを使用する時は必ず指定して下さい。 ippi0 at systm? pisa* at ippi0 PnPボードをPnPモードで使用する事を宣言します。このオプション はマシンがPnP BIOSを持っていなくても宣言できます。 PnP BIOSによって起動時にリソースのアロケーションが既におこなわ ている場合には、カーネルが自動的にリソースを読み込んでデバイスの irq, drq, iobaseを設定しますので、id, dv, dvcfg以外は特に指定する 必要はありません。 options IPP_IRQMASK=0x1028 Plug And Playデバイスにおいて、利用するIRQを16進数で表現します。 bit3がIRQ3, bit5がIRQ5, bit6がIRQ6, bit10がIRQ10, bit12がIRQ12, bit13がIRQ13に相当します。例えば、0x1028と定義された場合、 IRQ3, IRQ5, IRQ10をPnPデバイスにおいて使用する事を意味します。 npx0 at isa? port 0x0f8 irq 14 'npx'ドライバは数値演算プロセッサに関するデバイスです。必ず指定 して下さい。 pc0 at isa? port 0x041 irq 1 'pc' ドライバは、コンソールとキーボードに関する制御をするドライ バです。後述のvscドライバの方が多機能なので、vscドライバを使用する 事をお勧めします。 'pc' ドライバを使用する時は、vsc デバイスに関する行をコメントアウ トして、これを指定して下さい。 kbdc0 at isa? port 0x041 irq 1 flags 0x00000003 vsc0 at kbdc0 vc0 at vsc? drive 0 iosiz 0x8000 flags 0x00000005 vc1 at vsc? drive 1 iosiz 0x8000 flags 0x00000001 vc2 at vsc? drive 2 iosiz 0x8000 flags 0x00000001 vc3 at vsc? drive 3 iosiz 0x8000 flags 0x00000001 vc4 at vsc? drive 4 iosiz 0x8000 flags 0x00000001 'kbdc'ドライバは、コンソールとキーボードに関する制御をするドラ イバです。また、'vsc'サブドライバは、仮想スクリーンに関する制御を するドライバです。仮想スクリーンは10個(vc0〜vc9)までサポートして います。 kbdcで指定しているflags は、次のような意味を持ちます。 bit0: BS キーとDEL キーの扱いを決定します。このビットを立てる と、FreeBSD(98)やMS-DOS などと互換になります。 bit1: このビットを立てると、GRPH キー+Fnキーでコンソールの切替 えをするようにします(FreeBSD(98)互換)。落とした場合、CTRL キー+Fnキーでコンソールの切替えをします。 通常はflags 0x00000000 で良いでしょう。 vc? で指定しているflags は、次のような意味を持ちます。 bit0 : このビットを立てると、VT100 のオートラップアラウンドモー ドをサポートするようになります。 bit1 : このビットを立てると、DEC INSモードをサポートするように なります。 bit2 : このビットを立てると、PC98のVRAMにアクセスする事が出来る ようになります。グラフィックを扱うアプリケーションを使用 する場合は指定して下さい。 xo bit3 : このビットを立てると、バックスクロール時に画面を分割して スクロールをするようになります。 bit4 : 予約されています。 bit5 : 予約されています。 bit6 : 最下行にステータスラインを開きます。(ANSI ESC互換) clock コマンドで時刻やAPMの状況を表示させる事が出来ます。 bit16-23: このビットは、ブート時の漢字コードを決定します。 0: JIS 1: JIS ROMAJI 2: EUC 3: SJIS 5: JE 6: DEC 'vsc'ドライバに関しては、console.txtも参考にして下さい。 options FAIL_PROBE_KEYBOARD options REVERSE_CRT 画面の色が反転表示させます。モノクロPC98NOTEを使用している時は 指定すると画面がみやすくなると思います。 options LINEIS25 物理的に25行しか表示出来ないPC98NOTE や、ディスプレイが30行を 表示できない時に指定して下さい。 options VSC_KMESG カーネルの出力するメッセージと、DDBでの出力メッセージを取得 可能にします。この機能は主に、デバッグメッセージを表示をファイ ル化する時に使用します。この機能については、console.txtも参照 して下さい。 options SCREEN_SAVER スクリーンセーバーを使用する時は指定して下さい。 options KBD_EXT NetBSD i386のpcvtやFreeBSDのsysconsと互換性のあるコンソールにし ます。X Windowを使用する時は指定して下さい。 options FONT_LOAD ブート時にJIS83及びJIS90フォントをロードするようにします。   指定した方が良いでしょう。 options EXTERNAL_WINDOW_BOARDS このオプションと、以下に示すグラフィックボード選択のオプション を有効にすると、アクセラレータボードを使用していてカーネルがpanic した時に、強制的にテキストモードに戻す事が出来るようになります。 X Windowを使用する時は指定した方が良いでしょう。 options PW Canopus PowerWindowシリーズを使用している時は指定して下さい。 options PWLB Canopus PowerWindowのローカルバス版を使用している時は指定して下さい。 options PCSKB EPSON PCSKB/SKB2を使用している時は指定して下さい。 options PCHKB EPSON PCHKB/PCHKB2を使用している時は指定して下さい。 options PCSKB4 EPSON PCSKB4を使用している時は指定して下さい。 options NECWAB NEC WAB-A/B、フルカラーWAB-A/B、S3 928/864 内蔵機など、NECのS3 チッ プを使用している時は指定して下さい。 options GANB IO DATAのGA-NBI/II/IVを使用している時は指定して下さい。 options WAB MELCOのWAB-S/1000/2000を使用している時は指定して下さい。 options WAP MELCOのWAP-2000/4000を使用している時は指定して下さい。 ser* at isa? port 0x030 irq 4 flags 0x00000000 ser* at isa? port 0x0b0 irq 3 flags 0x00010000 ser* at pisa? 'ser'ドライバは、シリアルポートドライバです。port 番号とflags の組合せによってサポートするボードを決定しています。現在の仕様では、 flags 0x00000000 : 内蔵8251 flags 0x00010000 : NEC PC-9861K/9801-101 ch1 flags 0x00020000 : NEC PC-9861K/9801-101 ch2 flags 0x00030000 : MELCO IND-SP, MELCO IND-SS ch1 flags 0x00040000 : MELCO IND-SS ch2 flags 0x00100000 : IO DATA RSA-98 ch1/2 flags 0x00110000 : genericなNS16550ドライバ flags 0x00120000 : 内蔵second comポート flags 0x00130000 : MicroCore MC16550(I,II) flags 0x00140000 : MicroCore MC-RS98 flags 0x00150000 : Media Inteligent RSB-2000/3000 flags 0x00160000 : RSB386 flags 0x00170000 : PCMCIA modem card flags 0x00180000 : IO DATA RSA98III flags 0x00190000 : MidoriHayes ESP98 となっています。また、pisa? と書かれた行はPCMCIA modem cardの指定 です。必要に応じて、GENERIC98 のser の部分をコメントアウトにすれば 良いでしょう。 options COMI_B38400 内蔵com portのデフォルトスピードを38400bpsにします。 serf* at ser? slave? sertty* at serf? I8251F chip driverを使用します。 seri* at ser? slave? sertty* at seri? I8251 chip driverを使用します。 sera* at ser? slave? sertty* at sera? RSA98 I/II/III special fifo asic chip driverを使用します。 serb* at ser? slave? sertty* at serb? RSB2000/3000 earth chip driverを使用します。 sern* at ser? slave? sertty* at sern? NS16550 chip driverを使用します。 #serh* at ser? slave? #sertty* at serh? HAYES chip driverを使用します。 ttycom* at sertty? ttycua* at sertty? シリアルデバイス(/dev/tty0?, /dev/cua?)を使用する時は必ず 指定して下さい。 lpt0 at isa? port 0x040 irq 8 # PC98 internal (traditional mode) lpt0 at isa? port 0x140 irq 14 # PC98 internal (bidirectional mode) lpt1 at isa? port 0x540 irq 12 # IND-SPT printer port (bidirectional?) 'lpt'ドライバは、プリンタドライバです。port番号によってサポート するデバイスを決定しています。現在の仕様では、 port 0x040   : 旧型機種の内蔵ポート port 0x140   : 新型機種の内蔵ポート その他のポート : MELCO IND-SPのプリンタポート等 となっています。 mms0 at isa? port 0x7fd9 irq 13 lms0 at isa? port 0x7fd9 irq 13 'mms' 'lms'ドライバは、バスマウスドライバです。NetBSD/i386 の Microsoft形式のデバイスドライバをベースにした物がmms、Logitech 形式のデバイスドライバをベースにした物がlmsです。 通常は、lms ドライバを有効にした方が良いでしょう。 ncv* at pisa? scsibus* at ncv? 'ncv'ドライバは、SCSI コントローラに NCR53C406/NCR53C500など を使用しているカードをサポートします。該当するカードを使用して いる時は有効にした方が良いでしょう。 stg* at pisa? scsibus* at stg? 'stg'ドライバは、SCSI コントローラに Future Domain TMC18C30など を使用しているカードをサポートします。該当するカードを使用している 時は有効にした方が良いでしょう。 aic* at isa? port 0x1840 irq 5 flags 0x10000 aic* at pisa? scsibus* at aic? 'aic'ドライバは、SCSI コントローラに AIC-6360を使用しているカー ドをサポートします。該当するカードを使用している時は有効にした方 が良いでしょう。flagsは次のような意味を持ちます。 flags 0x00000 : Slim scsi pcmcia card flags 0x10000 : NEC PC-9801-100, ADAPTEC AHA-1030P spc0 at pisa? scsibus* at spc? 'spc'ドライバは、SCSI コントローラに Fujitsu MB89352 を使用して いるカードをサポートします。該当するカードを使用している時は有効に した方が良いでしょう。現在デバッグ中で正常には動きません。 bs* at isa? port 0xcc0 irq 5 drq 3 flags 0x00000 bs* at isa? port 0xcc0 irq 5 drq 3 flags 0x10000 bs* at isa? port 0xcc0 irq 5 drq 3 flags 0x20000 bs* at isa? port 0xcc0 irq 5 drq 3 flags 0x30000 bs* at isa? port 0xcc0 irq 5 drq 3 iomem 0xdc000 flags 0x040000 bs* at pisa? scsibus* at bs? 'bs'ドライバは、PC-9801-92ボード互換のSCSIコントローラをサポート します。flags はボードメーカーを指定する物で、これを指定する事によっ て、バスマスタやSMIT転送を有効にしたりする事が出来ます。 flags 0x00000 : 標準的なPC-9801-92互換ボード flags 0x10000 : IO DATAの、SC98IIボード flags 0x20000 : 日本TEXAのボード flags 0x30000 : ELECOMのバスマスタボード flags 0x40000 : SMITタイプのボード flags 0x50000 : Logitec LHA-20xボード flags 0x40000 (SMITタイプ) の場合、ROM ベースアドレスを iomem として指定して下さい。 ahc* at pci? bus ? function? scsibus* at ahc? 'ahc'ドライバは、AHA-2940 SCSIコントローラ及びその互換製品をサポート します。これらの製品を所持している時は有効にした方が良いでしょう。 ncr* at pci? bus? function? scsibus* at ncr? options NCR_IOMAPPED 'ncr' ドライバは、NCR53C815 SCSIコントローラを装備した製品をサポート します。現状ではIO DATA SC-98(PCI)での動作が確認されています。 options NCR_IOMAPPEDは、必ず付けて下さい。また、十分なデバッグがされて いないので、使用には注意して下さい。 sd0 at scsibus? target 0 lun 0 flags 0x320c0304 # SCSI disk drives sd1 at scsibus? target 1 lun 0 flags 0x320c0304 # SCSI disk drives sd2 at scsibus? target 2 lun 0 flags 0x320c0304 # SCSI disk drives sd3 at scsibus? target 3 lun 0 flags 0x320c0304 # SCSI disk drives sd4 at scsibus? target 4 lun 0 flags 0x320c0304 # SCSI disk drives sd5 at scsibus? target 5 lun 0 flags 0x320c0304 # SCSI disk drives sd6 at scsibus? target 6 lun 0 flags 0x320c0304 # SCSI disk drives st* at scsibus? target ? lun 0 flags 0x320c0304 # SCSI tape drives cd* at scsibus? target ? lun 0 flags 0x320c0304 # SCSI CD-ROM drives SCSI デバイスの動作を決める重要なパラメータです。flagsは主に'bs' ドライバによって使用されます。各ビットの意味は次の通りです。 各ビットの前の符号は該当オプションによって、+は効率向上効果、-は抑止効果   が有る事を意味します。 + bit0 : このビットを立てると、同期転送をサポートするように なります。 + bit1 : このビットを立てると、targetがdisconnect reselectをscsi          フェーズ内で行うように成ります。 - bit2 : このビットを立てると、他のtargetと競合するようなバス          アービトレーションを行いません。 + bit3 : このビットを立てると、コマンドリンクを実行するように なります。 + bit4 : このビットを立てると、qtagメッセージを実行できるよう にします(このビットは、現在使用されていません)。     bit5-7 : 現在使われていません。 - bit8 : このビットを立てると、combinationコマンドを使用しない ようにします。 - bit9 : このビットを立てると、parityラインを監視しないようにな ります。 bit10 : bit11 : SMIT転送を禁止し、DMA転送に切替えます。 bit12-15: SCSI diskのGEOMETRYを選択します。 bit16-23: 同期転送時のFIFOバッファの最大値を指定します。通常は、 0x0cを指定すれば良いでしょう。 bit24-31: 同期転送時の転送スピードの最大値を指定します。例えば、 5M/s と指定したい場合は、50 = 0x32 と指定して下さい。 通常は0x32で良いでしょう。 通常のHDDであれば、flags は0x320c0003 と指定すれば良いでしょう。また、 古いMOやCD-ROMの場合、完全なSCSIコマンドをサポートしていない場合が多い ので、まずflags を0x320c0304 から始めて、徐々にチューニングしていった方 が良いでしょう。 なお、チューニング方法については、scsi.txt も参考にして下さい。 fdc0 at isa? port 0x090 irq 11 drq 2 fd* at fdc? drive 0 'fdc' ドライバは、フロッピーディスクコントローラの制御をするため のドライバです。また、'fd'サブドライバはフロッピーディスクの制御を するためのドライバです。fd の flags は次のような意味を持ちます。 bit0 : 挿入されたフロッピーディスクのメディアを自動判別を禁止し ます。 bit1 : このドライブを強制的に1.44MBをサポートするようになります。 外付けドライブで1.44MBが使える時は指定した方が良いでしょう。 外付け1.44MBを持っていない場合は、 fdc0 at isa? port 0x090 irq 11 drq 2 fd* at fdc? drive ? と書いておけば良いでしょう。 fdcコマンド等については、floppy.txt も参考にして下さい。 wdc0 at isa? port 0x640 irq 9 atabus* at wdc? wd* at atabus? chan ? wcd* at atabus? chan ? 'wdc'ドライバは、IDE/enhanced IDE仕様のHDD/CDROMを制御するための ドライバです。 なお、GENERIC98 およびINSTALL98を用いて作成したカーネルでは、 BIOSでサポートされていないHDD等に対しても存在チェックを行い、 あれば認識するようになっています。 例えば、IO DATA社の98NOTE用HDD で、second IDE busを搭載した物 がありますが、このHDDに接続したsecond HDDを認識する事が出来ます。 また、BIOSが1台のHDDしか認識しないようなマシンに、複数台のHDDを 接続した時も、NetBSD/pc98では認識するようになっています)。 また、PCMCIAカードに接続されたIDE HDなどを使用する時は、 wdc* at pisa? を有効にして下さい。 ep* at isa? port 0x40d0 irq 3 ep* at pisa? 'ep'ドライバは、3Com Etherlink III PC-9801 3C569 ネットワーク カード及び3C589 PCMCIAカードのドライバです。flags は次のような 意味を持ちます。 bit24 : このビットを立てると、NetBSD/i386 オリジナルのポートオフ セットを使用するようになります。 通常は、必要に応じてコメントアウトにすれば良いでしょう。 we0 at isa? port 0x10d0 irq 6 iomem 0xc8000 iosiz 8192 'we'ドライバは、SMC EtherEZ98用のドライバです。 ne* at isa? port 0x00d8 irq 6 flags 0x100000 ne* at isa? port 0x00d8 irq 6 flags 0x200000 ne* at isa? port 0x00d0 irq 6 flags 0x300000 ne* at isa? port 0x00d0 irq 6 flags 0x400000 ne* at isa? port 0x56d0 irq 6 flags 0x500000 ne* at isa? port 0x00d0 irq 6 iomem 0xc00000 flags 0x60000 ne* at pisa? 'ne'ドライバは、dp8390 というチップを積んだネットワークカード ドライバです。ボードの判別は、flags によって決定されます。 0x000000 : (Reserved) 0x100000 : Allied Telesis CentreCom LA-98-T ELECOM Laneed LD-CDWA ELECOM Laneed LD-CDY IO DATA PCLA/T Macnica ME1 (動作未確認) Matsushita CF-VEL211P-B MELCO LPC-TJ, LPC-TS NEC PC-9801N-J12 PLANET SMART COM CREDITCARD/2000 PCMCIA PLANET SMART COM 3500 ENW-3500-T 0x200000 : PLANET SMART COM 98 EN-2298-C ELECOM LANEED LD-BND[123]A Macnica ME98 (動作未確認) 0x300000 : MELCO EGY-98 Contec C-NET(98)E*A/L*A (動作未確認) Contec C-NET(98)P [not P2] (動作未確認) 0x400000 : MELCO LGY-98, IND-SP, IND-SS MACNICA NE2098 (動作未確認) 0x500000 : ICM DT-ET-25, DT-ET-T5, IF-2766ET, IF-2771ET PLANET SMART COM 98 EN-2298-T (動作未確認) PLANET SMART COM 98 EN-2298P-T (動作未確認) D-Link DE-298{T,TP,CAT} (動作未確認) D-Link DE-298PT D-Link DE-298PCAT ELECOM Laneed LD-98P 0x600000 : Allied Telesis CentreCom SIC-98 0x700000 : APEX DATA MultiCard 0x800000 : NEC PC-9801-108 0x900000 : IO DATA LA/T-98 0xa00000 : Contec C-NET(98) (JP1で0xaaedを指定した場合) 0xa10000 : Contec C-NET(98) (JP1で0x55edを指定した場合) 0xb00000 : Contec C-NET(98)E/L (JP1で0xaaedを指定した場合) 0xb10000 : Contec C-NET(98)E/L (JP1で0x55edを指定した場合) D-Link DE-298PCAT及びELECOM Laneed LD-98Pについては、ボード附属の セットアッププログラムで使用するメディア(10BASE-[25T])を正しく設定 して下さい。 fe* at isa? port 0x01d4 irq 3 flags 0x10000 fe* at pisa? 'fe'ドライバは、Fujitsu MB86960というチップ及びその互換チップを 積んだネットワークカード用ドライバです。flagsは、次のような意味を持ちます。 0x10000 : Allied Telesis RE1000x シリーズ 0x20000 : Allied Telesis RE1000x PLUS/ME1500 シリーズ 0x30000 : TDK LAC-CD02x(PCMCIA CARD) 0x50000 : Ratoc REX-5588A(PCMCIA CARD) 通常は、必要に応じて、コメントアウトして下さい。 ie* at isa? port 0x800 irq 6 le* at isa? port 0x03d0 irq 6 drq 1 flags 0x10000 'le'ドライバは、CONTEC C-NET(98)S-12をサポートします。 sm0 at pisa? 'es'ドライバは、SMCの91C9xというチップを積んだネットワーク カード用ドライバです。現在デバッグ中で正常には動きません。 de* at pci? dev ? function ? 'de'ドライバは、DEC DC21x4xというチップを積んだネットワーク カード用ドライバです。PLANET SMART COM Fast/9500で動作確認されて います。 en* at pci? dev ? function ? ep* at pci? dev ? function ? 'ep'ドライバは、3Com 3C590用ネットワークカードドライバです。 動作未確認です。 fpa* at pci? dev ? function ? 'fpa'ドライバは、DEC DEFPA FDDIカード用ドライバです。 動作未確認です。 fxp* at pci? dev ? function ? 'fxp'ドライバは、Intel EtherExpressPro/1000互換のネットワーク カード用ドライバです。 le* at pci? dev ? function ? 'le'ドライバは、PCnet-PCI互換のネットワークカード用ドライバ です。動作未確認です。 tl* at pci? dev ? function ? mii* at tl? tlphy* at mii? dev ? # ThunderLAN PHYs nsphy* at mii? dev ? # NS and compatible PHYs spkr0 at isa? 'spkr' デバイスは、内蔵スピーカをサポートします。 sb0 at isa? port 0x20d2 irq 5 drq 3 audio* at sb? 'sb'ドライバは、SoundBlaster16/98をサポートします。動作未確認です。 pcm0 at isa? port 0xa460 irq 12 'pcm'ドライバは、"PC-9801-86ボード"、A-MATEに搭載されている 音源、86ボード互換のサードパーティー製のボード用のドライバです。 また、初期のころのWaveMaster で、16.54kHzのかわりに16.00kHzで 録音再生されてしまうボードを使用している場合は、flags 1を付けて 下さい。 wss0 at isa? port 0xf40 irq 12 drq 1 CS4231互換のCbusボードの場合は、isa0に直接接続してください。 内蔵音源を使用する場合は、次に示す記述を指定してください。 necss0 at systm? wss* at necss? 'wss'ドライバは、X-MATE などに搭載されている、CS4231という チップのドライバです。wssは直接isa0に接続する方法(前述)とnecss0 (NECサウンドセレクター)を経由する方法があります。 マシンにCS4231を搭載している機種は必ず上記のようにnecss0が親デバイスに なるように記述してください。 特に音源搭載のノートマシンでは必ずnecss?を経由しないとサスペンド 時にマシンがハングする可能性があります。 pcm* at necss? 'pcm'デバイスは、NEC PC-9801-86ボード互換のPCMデバイスを内蔵 している場合に指定します。 yms* at necss? 'yms'デバイスは、YM2203, YM2608, YM288を内蔵している場合に指定 します。 qws* at pisa? # PnP QVision WaveStar pcm* at qws? yms* at qws? joy* at qws? mpu* at qws? mpu* at pisa? # S-MPU98 (PnP) audio* at pcm? audio* at wss? audio* at yms? midi* at mpu? joy0 at isa? port 0x4d2 'joy' ドライバは、ジョイスティックポートに接続されたジョイ スティックをサポートします。コンピュータテクニカ社のJSB-98 ジョイ スティックインターフェイスボードで信号送信のチェックのみ確認されて いますが、正常に動作するかは不明です。 apm0 at systm? 'apm' ドライバは、APM(Advanced Power Management)をサポート します。 APMに関しては「misc.txt」のAPMの項目も御覧下さい。 nulldv* at pisa? pseudo-device ccd 4 指定して下さい。 pseudo-device md 1 # memory disk device (ramdisk) pseudo-device vnd 4 vnodeファイルシステムをサポートします。必ず指定して下さい。 pseudo-device vpd 4 # virtual partition driver pseudo-device bpfilter 8 # Berkeley packet filter pseudo-device ipfilter # IP filter (firewall) and NAT pseudo-device loop 1 localhost用の仮想デバイスです。必ず指定して下さい。 pseudo-device bpfilter 8 BPF(Berkley Packet Filter)を使用する時は指定して下さい。 pseudo-device ppp 2 PPP(Point to Point Protocol)を使用する時は指定して下さい。 pseudo-device sl 2 SLIP(Serial Line Internet Protocol)を使用する時は指定して下さい。 pseudo-device strip 2 # Starmode Radio IP (Metricom) pseudo-device tun 2 トンネルデバイスを使用する時は指定して下さい(主に、IIJ-ppp)。 pseudo-device pty 64 仮想端末デバイスです。必ず指定して下さい。 pseudo-device tb 1    RS232C tablets line disciplineを使用可能にします。    通常必要ないでしょう。 NetBSD/pc98 core team 連絡先 E-Mail:netbsd-98@njk.co.jp